﻿using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;

namespace X.Core.Interfaces
{
    public interface IParameterModel : ISaveModel
    {
        bool IsInitialized { get; }
        JObject JObject { get; set; }
        Dictionary<string, int> ParametersInt { get; set; }
        Dictionary<string, double> ParametersDouble { get; set; }
        Dictionary<string, bool> ParametersBool { get; set; }
        Dictionary<string, string> ParametersString { get; set; }
        Dictionary<string, Guid> ParametersGuid { get; set; }
        void SetData(string key, int value);
        void SetData(string key, double value);
        void SetData(string key, bool value);
        void SetData(string key, string value);
        void SetData(string key, Guid value);
        int GetInt(string key, int defaultValue = 0);
        double GetDouble(string key, double defaultValue = 0.0);
        bool GetBool(string key, bool defaultValue = false);
        string GetString(string key, string defaultValue = null);
        Guid GetGuid(string key, Guid defaultValue = default(Guid));
        void ClearParameters();
    }
}
